home *** CD-ROM | disk | FTP | other *** search
/ Sprite 1984 - 1993 / Sprite 1984 - 1993.iso / src / cmds / gdb-4.5 / ds3100.md / cfg-paper.info < prev    next >
Encoding:
Text File  |  1992-06-26  |  27.8 KB  |  707 lines

  1. Making info file `cfg-paper.info' from `./cfg-paper.texi'.
  2. - from
  3. input file ./cfg-paper.texi.
  4.  
  5.    This document attempts to describe the general concepts behind
  6. configuration of the Cygnus Support release of the GNU Development
  7. Tools.  It also discusses common usage..
  8.  
  9.    Copyright (C) 1991, 1992 Cygnus Support Permission is granted to
  10. make and distribute verbatim copies of this manual provided the
  11. copyright notice and this permission notice are preserved on all
  12. copies.
  13.  
  14.    Permission is granted to copy and distribute modified versions of
  15. this manual under the conditions for verbatim copying, provided that
  16. the entire resulting derived work is distributed under the terms of a
  17. permission notice identical to this one.
  18.  
  19.    Permission is granted to copy and distribute translations of this
  20. manual into another language, under the above conditions for modified
  21. versions, except that this permission notice may be stated in a
  22. translation approved by Cygnus Support.
  23.  
  24. START-INFO-DIR-ENTRY
  25. * configuration: (cfg-paper.info).    Some theory on configuring source.
  26. END-INFO-DIR-ENTRY
  27.  
  28.  
  29. 
  30. File: cfg-paper.info,  Node: top,  Next: Some Basic Terms,  Prev: (dir),  Up: (dir)
  31.  
  32. This document attempts to describe the general concepts behind
  33. configuration of the Cygnus Support release of the GNU Development
  34. Tools.  It also discusses common usage.
  35.  
  36. * Menu:
  37.  
  38. * Some Basic Terms::        Some Basic Terms
  39. * Specifics.::            Specifics
  40. * Building Development Environments::  Building Development Environments
  41. * A Walk Through::        A Walk Through
  42. * Final Notes::            Final Notes
  43. * Index::            Index
  44.  
  45.  -- The Detailed Node Listing --
  46.  
  47. Some Basic Terms
  48.  
  49. * Host Environments::        Host Environments
  50. * Configuration Time Options::    Configuration Time Options
  51.  
  52. A Walk Through
  53.  
  54. * Native Development Environments::  Native Development Environments
  55. * Emulation Environments::    Emulation Environments
  56. * Simple Cross Environments::    Simple Cross Environments
  57. * Crossing Into Targets::    Crossing Into Targets
  58. * Canadian Cross::        Canadian Cross
  59.  
  60. Final Notes
  61.  
  62. * Hacking Configurations::    Hacking Configurations
  63.  
  64.  
  65. 
  66. File: cfg-paper.info,  Node: Some Basic Terms,  Next: Specifics.,  Prev: top,  Up: top
  67.  
  68. Some Basic Terms
  69. ****************
  70.  
  71. There are a lot of terms that are frequently used when discussing
  72. development tools.  Most of the common terms have been used for many
  73. different concepts such that their meanings have become ambiguous to
  74. the point of being confusing.  Typically, we only guess at their
  75. meanings from context and we frequently guess wrong.
  76.  
  77. This document uses very few terms by comparison.  The intent is to make
  78. the concepts as clear as possible in order to convey the usage and
  79. intent of these tools.
  80.  
  81. *Programs* run on *machines*.  Programs are very nearly always written
  82. in *source*.  Programs are *built* from source.  *Compilation* is a
  83. process that is frequently, but not always, used when building
  84. programs.
  85.  
  86. * Menu:
  87.  
  88. * Host Environments::        Host Environments
  89. * Configuration Time Options::    Configuration Time Options
  90.  
  91.  
  92. 
  93. File: cfg-paper.info,  Node: Host Environments,  Next: Configuration Time Options,  Prev: Some Basic Terms,  Up: Some Basic Terms
  94.  
  95. Host Environments
  96. =================
  97.  
  98. In this document, the word *host* refers to the environment in which
  99. the source in question will be compiled.  *host* and *host name* have
  100. nothing to do with the proper name of your host, like *ucbvax*,
  101. *prep.ai.mit.edu* or *att.com*.  Instead they refer to things like
  102. *sun4* and *dec3100*.
  103.  
  104. Forget for a moment that this particular directory of source is the
  105. source for a development environment.  Instead, pretend that it is
  106. the source for a simpler, more mundane, application, say, a desk
  107. calculator.
  108.  
  109. Source that can be compiled in more than one environment, generally
  110. needs to be set up for each environment explicitly.  Here we refer to
  111. that process as configuration.  That is, we configure the source for
  112. a host.
  113.  
  114. For example, if we wanted to configure our mythical desk calculator to
  115. compile on a SparcStation, we might configure for host sun4.  With
  116. our configuration system:
  117.  
  118. cd desk-calculator ; ./configure sun4
  119.  
  120. does the trick.  `configure' is a shell script that sets up Makefiles,
  121. subdirectories, and symbolic links appropriate for compiling the
  122. source on a sun4.
  123.  
  124. The *host* environment does not necessarily refer to the machine on
  125. which the tools are built.  It is possible to provide a sun3
  126. development environment on a sun4.  If we wanted to use a cross
  127. compiler on the sun4 to build a program intended to be run on a sun3,
  128. we would configure the source for sun3.
  129.  
  130. cd desk-calculator ; ./configure sun3
  131.  
  132. The fact that we are actually building the program on a sun4 makes no
  133. difference if the sun3 cross compiler presents an environment that
  134. looks like a sun3 from the point of view of the desk calculator
  135. source code.  Specifically, the environment is a sun3 environment if
  136. the header files, predefined symbols, and libraries appear as they do
  137. on a sun3.
  138.  
  139. Nor does the host environment refer to the the machine on which the
  140. program to be built will run.  It is possible to provide a sun3
  141. emulation environment on a sun4 such that programs built in a sun3
  142. development environment actually run on the sun4.  This technique is
  143. often used within individual programs to remedy deficiencies in the
  144. host operating system.  For example, some operating systems do not
  145. provide the `bcopy' function and so it is emulated using the `memcpy'
  146. funtion.
  147.  
  148. Host environment simply refers to the environment in which the program
  149. will be built from the source.
  150.  
  151.  
  152. 
  153. File: cfg-paper.info,  Node: Configuration Time Options,  Prev: Host Environments,  Up: Some Basic Terms
  154.  
  155. Configuration Time Options
  156. ==========================
  157.  
  158. Many programs have compile time options.  That is, features of the
  159. program that are either compiled into the program or not based on a
  160. choice made by the person who builds the program.  We refer to these
  161. as *configuration options*.  For example, our desk calculator might
  162. be capable of being compiled into a program that either uses infix
  163. notation or postfix as a configuration option.  For a sun3, to choose
  164. infix you might use:
  165.  
  166. ./configure sun3 -notation=infix
  167.  
  168. while for a sun4 with postfix you might use:
  169.  
  170. ./configure sun4 -notation=postfix
  171.  
  172. If we wanted to build both at the same time, the intermediate pieces
  173. used in the build process must be kept separate.
  174.  
  175. mkdir ../objdir.sun4
  176. (cd ../objdir.sun4 ; ./configure sun4 -notation=postfix -srcdir=../src)
  177. mkdir ../objdir.sun3
  178. (cd ../objdir.sun3 ; ./configure sun3 -notation=infix -srcdir=../src)
  179.  
  180. will create subdirectories for the intermediate pieces of the sun4 and
  181. sun3 configurations.  This is necessary as previous systems were only
  182. capable of one configuration at a time.  Otherwise, a second
  183. configuration would write over the first.  We've chosen to retain
  184. this behaviour so the obj directories and the `-srcdir' configuration
  185. option are necessary to get the new behaviour.  The order of the
  186. arguments doesn't matter.  There should be exactly one argument
  187. without a leading `-' sign and that argument will be assumed to be
  188. the host name.
  189.  
  190. From here on the examples will assume that you want to build the tools
  191. *in place* and won't show the `-srcdir' option, but remember that it
  192. is available.
  193.  
  194. In order to actually install the program, the configuration system
  195. needs to know where you would like the program installed.  The
  196. default location is `/usr/local'.  We refer to this location as
  197. `$(prefix)'.  All user visible programs will be installed in
  198. ``$(prefix)'/bin'.  All other programs and files will be installed in
  199. a subdirectory of ``$(prefix)'/lib'.
  200.  
  201. NOTE: `$(prefix)' was previously known as `$(destdir)'.
  202.  
  203. You can elect to change `$(prefix)' only as a configuration time option.
  204.  
  205. ./configure sun4 -notation=postfix -prefix=/local
  206.  
  207. Will configure the source such that:
  208.  
  209. make install
  210.  
  211. will put it's programs in `/local/bin' and `/local/lib/gcc'.  If you
  212. change `$(prefix)' after building the source, you will need to:
  213.  
  214. make clean
  215.  
  216. before the change will be propogated properly.  This is because some
  217. tools need to know the locations of other tools.
  218.  
  219. With these concepts in mind, we can drop the desk calculator example
  220. and move on to the application that resides in these directories,
  221. namely, the source to a development environment.
  222.  
  223.  
  224. 
  225. File: cfg-paper.info,  Node: Specifics.,  Next: Building Development Environments,  Prev: Some Basic Terms,  Up: top
  226.  
  227. Specifics
  228. *********
  229.  
  230. The GNU Development Tools can be built on a wide variety of hosts.  So,
  231. of course, they must be configured.  Like the last example,
  232.  
  233. ./configure sun4 -prefix=/local
  234. ./configure sun3 -prefix=/local
  235.  
  236. will configure the source to be built in subdirectories, in order to
  237. keep the intermediate pieces separate, and to be installed in `/local'.
  238.  
  239. When built with suitable development environments, these will be native
  240. tools.  We'll explain the term *native* later.
  241.  
  242.  
  243. 
  244. File: cfg-paper.info,  Node: Building Development Environments,  Next: A Walk Through,  Prev: Specifics.,  Up: top
  245.  
  246. Building Development Environments
  247. *********************************
  248.  
  249. The Cygnus Support GNU development tools can not only be built in a
  250. number of host development environments, they can also be configured
  251. to create a number of different development environments on each of
  252. those hosts.  We refer to a specific development environment created
  253. as a *target*.  That is, the word *target* refers to the development
  254. environment produced by compiling this source and installing the
  255. resulting programs.
  256.  
  257. For the Cygnus Support GNU development tools, the default target is the
  258. same as the host.  That is, the development environment produced is
  259. intended to be compatible with the environment used to build the tools.
  260.  
  261. In the example above, we created two configurations, one for sun4 and
  262. one for sun3.  The first configuration is expecting to be built in a
  263. sun4 development environment, to create a sun4 development environment.
  264. It doesn't necessarily need to be built on a sun4 if a sun4
  265. development environment is available elsewhere.  Likewise, if the
  266. available sun4 development environment produces executables intended
  267. for something other than sun4, then the development environment built
  268. from this sun4 configuration will run on something other than a sun4.
  269. From the point of view of the configuration system and the GNU
  270. development tools source, this doesn't matter.  What matters is that
  271. they will be built in a sun4 environment.
  272.  
  273. Similarly, the second configuration given above is expecting to be
  274. built in a sun3 development environment, to create a sun3 development
  275. environment.
  276.  
  277. The development environment produced, is a configuration time option,
  278. just like `$(prefix)'.
  279.  
  280. ./configure sun4 -prefix=/local -target=sun3
  281. ./configure sun3 -prefix=/local -target=sun4
  282.  
  283. In this example, like before, we create two configurations.  The first
  284. is intended to be built in a sun4 environment, in subdirectories, to
  285. be installed in `/local'.  The second is intended to be built in a
  286. sun3 environment, in subdirectories, to be installed in `/local'.
  287.  
  288. Unlike the previous example, the first configuration will produce a
  289. sun3 development environment, perhaps even suitable for building the
  290. second configuration.  Likewise, the second configuration will
  291. produce a sun4 development environment, perhaps even suitable for
  292. building the first configuration.
  293.  
  294. The development environment used to build these configurations will
  295. determine the machines on which the resulting development
  296. environments can be used.
  297.  
  298.  
  299. 
  300. File: cfg-paper.info,  Node: A Walk Through,  Next: Final Notes,  Prev: Building Development Environments,  Up: top
  301.  
  302. A Walk Through
  303. **************
  304.  
  305. * Menu:
  306.  
  307. * Native Development Environments::  Native Development Environments
  308. * Emulation Environments::    Emulation Environments
  309. * Simple Cross Environments::    Simple Cross Environments
  310. * Crossing Into Targets::    Crossing Into Targets
  311. * Canadian Cross::        Canadian Cross
  312.  
  313.  
  314. 
  315. File: cfg-paper.info,  Node: Native Development Environments,  Next: Emulation Environments,  Prev: A Walk Through,  Up: A Walk Through
  316.  
  317. Native Development Environments
  318. ===============================
  319.  
  320. Let us assume for a moment that you have a sun4 and that with your sun4
  321. you received a development environment.  This development environment
  322. is intended to be run on your sun4 to build programs that can be run
  323. on your sun4.  You could, for instance, run this development
  324. environment on your sun4 to build our example desk calculator
  325. program.  You could then run the desk calculator program on your sun4.
  326.  
  327. The resulting desk calculator program is referred to as a *native*
  328. program.  The development environment itself is composed of native
  329. programs that, when run, build other native programs.  Any other
  330. program is referred to as *foreign*.  Programs intended for other
  331. machines are foreign programs.
  332.  
  333. This type of development environment, which is by far the most common,
  334. is refered to as *native*.  That is, a native development environment
  335. runs on some machine to build programs for that same machine.  The
  336. process of using a native development environment to build native
  337. programs is called a *native* build.
  338.  
  339. ./configure sun4
  340.  
  341. will configure this source such that when built in a sun4 development
  342. environment, with a development environment that builds programs
  343. intended to be run on sun4 machines, the programs built will be
  344. native programs and the resulting development environment will be a
  345. native development environment.
  346.  
  347. The development system that came with your sun4 is one such environment.
  348. Using it to build the GNU Development Tools is a very common activity
  349. and the resulting development environment is quite popular.
  350.  
  351. make all
  352.  
  353. will build the tools as configured and will assume that you want to use
  354. the native development environment that came with your machine.
  355.  
  356. Using a development environment to build a development environment is
  357. called *bootstrapping*.  The Cygnus Support release of the GNU
  358. Development Tools is capable of bootstrapping itself.  This is a very
  359. powerful feature that we'll return to later.  For now, let's pretend
  360. that you used the native development environment that came with your
  361. sun4 to bootstrap the Cygnus Support release and let's call the new
  362. development environment *stage1*.
  363.  
  364. Why bother?  Well, most people find that the GNU development
  365. environment builds programs that run faster and take up less space
  366. than the native development environments that came with their
  367. machines.  Some people didn't get development environments with their
  368. machines and some people just like using the GNU tools better than
  369. using other tools.
  370.  
  371. While you're at it, if the GNU tools produce better programs, maybe you
  372. should use them to build the GNU tools.  It's a good idea, so let's
  373. pretend that you do.  Let's call the new development environment
  374. *stage2*.
  375.  
  376. So far you've built a development environment, stage1, and you've used
  377. stage1 to build a new, faster and smaller development environment,
  378. stage2, but you haven't run any of the programs that the GNU tools
  379. have built.  You really don't yet know if these tools work.  Do you
  380. have any programs built with the GNU tools?  Yes, you do.  stage2. 
  381. What does that program do?  It builds programs.  Ok, do you have any
  382. source handy to build into a program?  Yes, you do.  The GNU tools
  383. themselves.  In fact, if you use stage2 to build the GNU tools again
  384. the resulting programs should be identical to stage2.  Let's pretend
  385. that you do and call the new development environment *stage3*.
  386.  
  387. You've just completed what's called a *three stage boot*.  You now have
  388. a small, fast, somewhat tested, development environment.
  389.  
  390. make bootstrap
  391.  
  392. will do a three stage boot across all tools and will compare stage2 to
  393. stage3 and complain if they are not identical.
  394.  
  395. Once built,
  396.  
  397. make install
  398.  
  399. will install the development environment in the default location or in
  400. `$(prefix)' if you specified an alternate when you configured.
  401.  
  402. Any development environment that is not a native development
  403. environment is refered to as a *cross* development environment. 
  404. There are many different types of cross development environments but
  405. most fall into one of three basic categories.
  406.  
  407.  
  408. 
  409. File: cfg-paper.info,  Node: Emulation Environments,  Next: Simple Cross Environments,  Prev: Native Development Environments,  Up: A Walk Through
  410.  
  411. Emulation Environments
  412. ======================
  413.  
  414. The first category of cross development environment is called
  415. *emulation*.  There are two primary types of emulation, but both
  416. types result in programs that run on the native host.
  417.  
  418. The first type is *software emulation*.  This form of cross development
  419. environment involves a native program that when run on the native
  420. host, is capable of interpreting, and in most aspects running, a
  421. program intended for some other machine.  This technique is typically
  422. used when the other machine is either too expensive, too slow, too
  423. fast, or not available, perhaps because it hasn't yet been built. 
  424. The native, interpreting program is called a *software emulator*.
  425.  
  426. The GNU Development Tools do not currently include any software
  427. emulators.  Some do exist and the GNU Development Tools can be
  428. configured to create simple cross development environments for with
  429. these emulators.  More on this later.
  430.  
  431. The second type of emulation is when source intended for some other
  432. development environment is built into a program intended for the
  433. native host.  The concepts of operating system universes and hosted
  434. operating systems are two such development environments.
  435.  
  436. The Cygnus Support Release of the GNU Development Tools can be
  437. configured for one such emulation at this time.
  438.  
  439. ./configure sun4 -ansi
  440.  
  441. will configure the source such that when built in a sun4 development
  442. environment the resulting development environment is capable of
  443. building sun4 programs from strictly conforming ANSI X3J11 C source. 
  444. Remember that the environment used to build the tools determines the
  445. machine on which this tools will run, so the resulting programs
  446. aren't necessarily intended to run on a sun4, although they usually
  447. are.  Also note that the source for the GNU tools is not strictly
  448. conforming ANSI source so this configuration cannot be used to
  449. bootstrap the GNU tools.
  450.  
  451.  
  452. 
  453. File: cfg-paper.info,  Node: Simple Cross Environments,  Next: Crossing Into Targets,  Prev: Emulation Environments,  Up: A Walk Through
  454.  
  455. Simple Cross Environments
  456. =========================
  457.  
  458. ./configure sun4 -target=a29k
  459.  
  460. will configure the tools such that when compiled in a sun4 development
  461. environment the resulting development environment can be used to
  462. create programs intended for an a29k.  Again, this does not
  463. necessarily mean that the new development environment can be run on a
  464. sun4.  That would depend on the development environment used to build
  465. these tools.
  466.  
  467. Earlier you saw how to configure the tools to build a native
  468. development environment, that is, a development environment that runs
  469. on your sun4 and builds programs for your sun4.  Let's pretend that
  470. you use stage3 to build this simple cross configuration and let's
  471. call the new development environment gcc-a29k.  Remember that this is
  472. a native build.  Gcc-a29k is a collection of native programs intended
  473. to run on your sun4.  That's what stage3 builds, programs for your
  474. sun4.  Gcc-a29k represents an a29k development environment that
  475. builds programs intended to run on an a29k.  But, remember, gcc-a29k
  476. runs on your sun4.  Programs built with gcc-a29k will run on your
  477. sun4 only with the help of an appropriate software emulator.
  478.  
  479. Building gcc-a29k is also a bootstrap but of a slightly different sort.
  480. We call gcc-a29k a *simple cross* environment and using gcc-a29k to
  481. build a program intended for a29k is called *crossing to* a29k. 
  482. Simple cross environments are the second category of cross
  483. development environments.
  484.  
  485.  
  486. 
  487. File: cfg-paper.info,  Node: Crossing Into Targets,  Next: Canadian Cross,  Prev: Simple Cross Environments,  Up: A Walk Through
  488.  
  489. Crossing Into Targets
  490. =====================
  491.  
  492. ./configure a29k -target=a29k
  493.  
  494. will configure the tools such that when compiled in an a29k development
  495. environment, the resulting development environment can be used to
  496. create programs intended for an a29k.  Again, this does not
  497. necessarily mean that the new development environment can be run on
  498. an a29k.  That would depend on the development environment used to
  499. build these tools.
  500.  
  501. If you've been following along this walk through, then you've already
  502. built an a29k environment, namely gcc-a29k.  Let's pretend you use
  503. gcc-a29k to build the current configuration.
  504.  
  505. Gcc-a29k builds programs intended for the a29k so the new development
  506. environment will be intended for use on an a29k.  That is, this new
  507. gcc consists of programs that are foreign to your sun4.  They cannot
  508. be run on your sun4.
  509.  
  510. The process of building this configuration is another a bootstrap. 
  511. This bootstrap is also a cross to a29k.  Because this type of build
  512. is both a bootstrap and a cross to a29k, it is sometimes referred to
  513. as a *cross into* a29k.  This new development environment isn't
  514. really a cross development environment at all.  It is intended to run
  515. on an a29k to produce programs for an a29k.  You'll remember that
  516. this makes it, by definition, an a29k native compiler.  *Crossing
  517. into* has been introduced here not because it is a type of cross
  518. development environment, but because it is frequently mistaken as
  519. one.  The process is *a cross* but the resulting development
  520. environment is a native development environment.
  521.  
  522. You could not have built this configuration with stage3, because stage3
  523. doesn't provide an a29k environment.  Instead it provides a sun4
  524. environment.
  525.  
  526. If you happen to have an a29k lying around, you could now use this
  527. fresh development environment on the a29k to three-stage these tools
  528. all over again.  This process would look just like it did when we
  529. built the native sun4 development environment because we would be
  530. building another native development environment, this one on a29k.
  531.  
  532.  
  533. 
  534. File: cfg-paper.info,  Node: Canadian Cross,  Prev: Crossing Into Targets,  Up: A Walk Through
  535.  
  536. Canadian Cross
  537. ==============
  538.  
  539. So far you've seen that our development environment source must be
  540. configured for a specific host and for a specific target.  You've
  541. also seen that the resulting development environment depends on the
  542. development environment used in the build process.
  543.  
  544. When all four match identically, that is, the configured host, the
  545. configured target, the environment presented by the development
  546. environment used in the build, and the machine on which the resulting
  547. development environment is intended to run, then the new development
  548. environment will be a native development environment.
  549.  
  550. When all four match except the configured host, then we can assume that
  551. the development environment used in the build is some form of library
  552. emulation.
  553.  
  554. When all four match except for the configured target, then the
  555. resulting development environment will be a simple cross development
  556. environment.
  557.  
  558. When all four match except for the host on which the development
  559. environment used in the build runs, the build process is a *cross
  560. into* and the resulting development environment will be native to
  561. some other machine.
  562.  
  563. Most of the other permutations do exist in some form, but only one more
  564. is interesting to the current discussion.
  565.  
  566. ./configure a29k -target=sun3
  567.  
  568. will configure the tools such that when compiled in an a29k development
  569. environment, the resulting development environment can be used to
  570. create programs intended for a sun3.  Again, this does not
  571. necessarily mean that the new development environment can be run on
  572. an a29k.  That would depend on the development environment used to
  573. build these tools.
  574.  
  575. If you are still following along, then you have two a29k development
  576. environments, the native development environment that runs on a29k,
  577. and the simple cross that runs on your sun4.  If you use the a29k
  578. native development environment on the a29k, you will be doing the
  579. same thing we did a while back, namely building a simple cross from
  580. a29k to sun3.  Let's pretend that instead, you use gcc-a29k, the
  581. simple cross development environment that runs on sun4 but produces
  582. programs for a29k.
  583.  
  584. The resulting development environment will run on a29k because that's
  585. what gcc-a29k builds, a29k programs.  This development environment
  586. will produce programs for a sun3 because that is how it was
  587. configured.  This means that the resulting development environment is
  588. a simple cross.
  589.  
  590. There really isn't a common name for this process because very few
  591. development environments are capable of being configured this
  592. extensively.  For the sake of discussion, let's call this process a
  593. *Canadian cross*.  It's a three party cross, Canada has a three party
  594. system, hence Canadian Cross.
  595.  
  596.  
  597. 
  598. File: cfg-paper.info,  Node: Final Notes,  Next: Index,  Prev: A Walk Through,  Up: top
  599.  
  600. Final Notes
  601. ***********
  602.  
  603. By *configures*, I mean that links, Makefile, .gdbinit, and
  604. config.status are built.  Configuration is always done from the
  605. source directory.
  606.  
  607. `./configure NAME'
  608. configures this directory, perhaps recursively, for a single
  609. host+target pair where the host and target are both NAME.  If a
  610. previous configuration existed, it will be overwritten.
  611.  
  612. `./configure HOSTNAME -target=TARGETNAME'
  613. configures this directory, perhaps recursively, for a single
  614. host+target pair where the host is HOSTNAME and target is TARGETNAME.
  615. If a previous configuration existed, it will be overwritten.
  616.  
  617. * Menu:
  618.  
  619. * Hacking Configurations::    Hacking Configurations
  620.  
  621.  
  622. 
  623. File: cfg-paper.info,  Node: Hacking Configurations,  Prev: Final Notes,  Up: Final Notes
  624.  
  625. Hacking Configurations
  626. ======================
  627.  
  628. The configure scripts essentially do three things, create
  629. subdirectories if appropriate, build a `Makefile', and create links
  630. to files, all based on and tailored to, a specific host+target pair. 
  631. The scripts also create a `.gdbinit' if appropriate but this is not
  632. tailored.
  633.  
  634. The Makefile is created by prepending some variable definitions to a
  635. Makefile template called `Makefile.in' and then inserting host and
  636. target specific Makefile fragments.  The variables are set based on
  637. the chosen host+target pair and build style, that is, if you use
  638. `-srcdir' or not.  The host and target specific Makefile may or may
  639. not exist.
  640.  
  641. * Makefiles can be edited directly, but those changes will eventually
  642. be lost.  Changes intended to be permanent for a specific host should
  643. be made to the host specific Makefile fragment.  This should be in
  644. `./config/mh-HOST' if it exists.  Changes intended to be permanent
  645. for a specific target should be made to the target specific Makefile
  646. fragment.  This should be in `./config/mt-TARGET' if it exists. 
  647. Changes intended to be permanent for the directory should be made in
  648. `Makefile.in'.  To propogate changes to any of these, either use
  649. `make Makefile' or `./config.status' or re-configure.
  650.  
  651.  
  652. 
  653. File: cfg-paper.info,  Node: Index,  Prev: Final Notes,  Up: top
  654.  
  655. Index
  656. *****
  657.  
  658. * Menu:
  659.  
  660. * ANSI: Emulation Environments.
  661. * Bootstrapping: Native Development Environments.
  662. * Building: Some Basic Terms.
  663. * Canadian Cross: Canadian Cross.
  664. * Compilation: Some Basic Terms.
  665. * Cross: Native Development Environments.
  666. * Crossing into: Crossing Into Targets.
  667. * Crossing to: Simple Cross Environments.
  668. * Emulation: Emulation Environments.
  669. * Foreign: Native Development Environments.
  670. * Machines: Some Basic Terms.
  671. * Native: Native Development Environments.
  672. * Programs: Some Basic Terms.
  673. * Simple cross: Simple Cross Environments.
  674. * Software emulation: Emulation Environments.
  675. * Software emulator: Emulation Environments.
  676. * Source: Some Basic Terms.
  677. * Stage1: Native Development Environments.
  678. * Stage2: Native Development Environments.
  679. * Stage3: Native Development Environments.
  680. * Target: Building Development Environments.
  681. * Three party cross: Canadian Cross.
  682. * Three stage boot: Native Development Environments.
  683. * X3J11: Emulation Environments.
  684. * host: Host Environments.
  685.  
  686.  
  687.  
  688. 
  689. Tag Table:
  690. Node: top1083
  691. Node: Some Basic Terms2065
  692. Node: Host Environments2999
  693. Node: Configuration Time Options5532
  694. Node: Specifics.8299
  695. Node: Building Development Environments8901
  696. Node: A Walk Through11516
  697. Node: Native Development Environments11935
  698. Node: Emulation Environments16179
  699. Node: Simple Cross Environments18221
  700. Node: Crossing Into Targets19820
  701. Node: Canadian Cross21994
  702. Node: Final Notes24790
  703. Node: Hacking Configurations25546
  704. Node: Index26908
  705. 
  706. End Tag Table
  707.